;(function (jQuery){
	$.fn.extend({
		//ajaxtip ver0.4_1216
		//配置式：访问方式，状态内容，准备函数，成功函数，结函数
		//注意：当前不支持ff等非IE浏览器的远程获取
		//author: corrie
		//GPL Lisence
		//http://www.corrie.net.cn
		//	对单程控制进行优化，当未处理完当前即选择下一个处理时，全不转交给第二个处理，不再进行第一个处理。
		//	增加loading的自由选择
		//	增加后置函数
		//	
		/**
		*	当前的配置式
		*	function refuse: 拒绝函数。数据被拒绝
		*	function approve: 成功函数。数据被接受
		*	function custom:	自定义处理函数。
		*	char tip: 自定义提示信息,配置custom使用
		*	char src: 自定义ajax处理的地址
		*	$("a").ajaxtip({custom:function(msg){//处理msg函数},tip:'自定义内容'});
		**/
		ajaxload:function(funcs){
			var XmlHttp = 0;
			defaults = {type:'get', status:'default', domain:'localhost,rssget.cn,baidu',loading_text:'正在处理……',tip_text:'提交数据……',flag_1:'1',flag_0:'0'};
			
			if($(this).is("form")){
				$(this).submit(function(){
					_init();
					elem = $(this);
					funcs.before && funcs.before.call(elem);
					href = _src();
					if(!href)return false;
					data = $(this).serialize();
					_go(href, data, 'get' ,funcs);
					return false;
				});
			}else{
				$(this).click(function(){//初始化
					_init();
					/*if(XmlHttp){
						XmlHttp.abort();
						XmlHttp=0;
					}*/
					elem = $(this);
					funcs.before && funcs.before.call(elem);
					href = _src();
					if(!href)return false;
					data = '';
					_go(href, data, 'get' ,funcs);
					return false;
				});	
			}
			
			function _src(){
				if(!funcs.src){
					if(elem.is("a")){
						href = elem.attr('href');
					}else if(elem.is("form")){
						href = elem.attr('action');
					}else{
						href = '';
					}
				}else{
					if(funcs.src.indexOf('http://')>=0){						
						href = funcs.src;
					}else if(funcs.src.indexOf('./')==0){
						pre = location.href.substring(0, location.href.lastIndexOf("/")+1);
						href = pre+funcs.src.substr(2);
					}else{
						pre = location.href.substring(0, location.href.lastIndexOf("/")+1);
						href = pre+funcs.src;
					}
					//alert(href);return false;
				}
				if(!href || href=='')return false;//无连接不执行
			
				if(href.indexOf('http://')>=0){
					allow = false;
					if(defaults.domain.indexOf(',')>=0){
						arr = defaults.domain.split(',');
						for(i=0;i<arr.length;i++){
							if(href.indexOf(arr[i])>=0)allow=true;
						}
					}else{
						if(href.indexOf(defaults.domain)>=0)allow=true;
					}
					if(!allow){
						_atip('不允许的域！');
						return false;
					}
				}
				return href;
			}
			
			//加载LOADING层
			function _init(s){
				if(s==0){
					$("#doajax_div_loading").remove();
					return;
				}
				if($("#doajax_div_loading").size()<=0){
					$(document.body).append("<div id='doajax_div_loading' class='doajax_loading'>" + defaults.loading_text + "</div>");
				}else{
					$("#doajax_div_loading").html(defaults.loading_text);
				}
			}
			//LOADING层的状态更改
			function _status(s){
				if(s==0){
					$("#doajax_div_loading").hide();
					$("#doajax_div_loading").removeClass('doajax_loading_ok').addClass('doajax_loading');
					return;
				}
				$("#doajax_div_loading").show();
			}
			//状态改变函数，控制两种层
			function _atip(s, time){
				if(!time)time = 500;
				
				if(s==0){
					$("#doajax_div_loading").html(defaults.loading_text);
					return;
				}
				$("#doajax_div_loading").html(s);
				$("#doajax_div_loading").removeClass('doajax_loading').addClass('doajax_loading_ok');
				_status();
				window.setTimeout(function(){
					_status(0);
				}, time);
				//alert(funcs.etip);
			}
			
			//AJAX处理函数和显示状态
			function _go(s, data, type, funcs){				
				_status();		
				XmlHttp = $.ajax({
					//async: false,
					type: type,
					url: s,
					cache: false,
					timeout: 10000,
					data: data,					
					beforeSend: function(){
						//before
					},
					success: function(msg){
						if(!funcs.custom){
							if(msg==defaults.flag_1){
								//.substr(0, 1)
								_atip('处理成功！');
								funcs.approve && funcs.approve.call(elem, msg);
							}else if(msg==defaults.flag_0){
								_atip('处理失败！');
								funcs.refuse && funcs.refuse.call(elem, msg);
							}else if(msg==''){
								_atip('未知信息！');
							}else{
								if(msg.length<100){
									_atip(msg);
								}else{
									_atip('获取信息过长！');
								}
							}
						}else{
							funcs.tip && _atip(funcs.tip);
							!funcs.tip && _atip('完成获取！');
							funcs.custom.call(elem, msg);							
						}
					},
					error: function(){
						_atip('网络异常！');
					},
					complete: function(){
						//_atip();
					}
				});
			}
		}
	});
})(jQuery);